// 《围棋》作者版权所有。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package cipher

// xorBytes对a和b中的字节进行异或运算。目标应该有足够的
// 空间，否则xorBytes会死机。返回异或的字节数。
func xorBytes(dst, a, b []byte) int {
	n := len(a)
	if len(b) < n {
		n = len(b)
	}
	if n == 0 {
		return 0
	}
	// 确保dst有足够的空间
	_ = dst[n-1]

	xorBytesARM64(&dst[0], &a[0], &b[0], n)
	return n
}

func xorWords(dst, a, b []byte) {
	xorBytes(dst, a, b)
}

// go:noescape 
func xorBytesARM64(dst, a, b *byte, n int)
